package com.sjb.sixteen_journey_backend.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sjb.sixteen_journey_backend.entity.vo.UserBaseMsgVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 我的地图表
 * </p>
 *
 * @author jcz
 * @since 2024-07-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("my_map")
public class MyMap implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 我的地图表的唯一标识
     */
    @TableId(value = "my_map_id", type = IdType.AUTO)
    private Integer myMapId;

    /**
     * 用户id
     */
    @TableField("user_id")
    @JsonIgnore
    private Integer userId;

    @TableField(exist = false)
    private UserBaseMsgVo user;

    @TableField(exist = false)
    private Boolean is_followedByUser;

    /**
     * 地图的中心点（城市名）
     */
    @TableField("site_name")
    private String siteName;

    /**
     * 地图的中心点（citycode）
     */
    @TableField("site_code")
    private String siteCode;
    /**
     * 地图的中心点经度（城市名）
     */
    @TableField("site_lng")
    private BigDecimal siteLng;

    /**
     * 地图的中心点纬度（城市名）
     */
    @TableField("site_lat")
    private BigDecimal siteLat;


    /**
     * 作者IP（省名）
     */
    @TableField("ip")
    private String ip;

    /**
     * 最新编辑时间
     */
    @TableField(value = "edite_time",fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime editeTime;

    /**
     * 地图名称
     */
    @TableField("map_name")
    private String mapName;

    /**
     * 地图封面地址
     */
    @TableField("path")
    private String path;

    /**
     * 地图权限（0为所有人可见，1为仅自己可见）
     */
    @TableField("authority")
    private Boolean authority;

    /**
     * 地图备注
     */
    @TableField("remarks")
    private String remarks;

    /**
     * 被赞
     */
    @TableField("is_collected")
    private Boolean isCollected;

    /**
     * 被喜欢
     */
    @TableField("be_liked")
    private Integer beLiked;

    /**
     * 浏览量
     */
    @TableField("pv")
    private Integer pv;

    @TableField(exist = false)
    private Long commentCount;

    /**
     * 爆料类型 6
     */
    @TableField("status")
    private Integer status;

    @TableField(exist = false)
    private List<MapSite> mapSite;

    @TableField(exist = false)
    private List<MapRoute> mapRoute;

    @TableField(exist = false)
    private Commonness commonness;
}
